package com.qzdsoft.erpcloud.service.sale;

import java.util.List;

import com.qzdsoft.erpcloud.domain.sale.SaleOrder;
import com.qzdsoft.erpcloud.vo.sale.SaleOrderEditEn;
import com.qzdsoft.erpcloud.vo.sale.SaleOrderQueryCriteriaViEn;
import com.qzdsoft.erpcloud.vo.sale.SaleOrderViEn;
import com.qzdsoft.vo.LayTableResponse;
import com.qzdsoft.vo.Response;
import com.qzdsoft.vo.TypeInfo;

/**
 * 模块名：销售订单
 * <p>详细描述：销售订单服务层
 * @author DamingChen Sep 27, 2017
 * @see
 * @since 1.0
 */
public interface SaleOrderService {
	
	
	/**
	 * 更加指定条件查询销售订单
	 * @param info
	 * @return
	 */
	LayTableResponse<SaleOrderViEn> findSaleOrdersBy(SaleOrderQueryCriteriaViEn saleOrderQueryCriteriaViEn);

	/**
	 * 展示单个销售订单
	 * @param id
	 * @return
	 */
	SaleOrderViEn findSaleOrderBy(Integer id);
	
	
	/**
	 * 修改销售订单
	 * @param info
	 * @return
	 */
	Response<String> edit(SaleOrderEditEn saleOrderEditEn,Integer userId);
	
	/**
	 * 销售订单审核
	 * @param id
	 * @return
	 */
	Response<SaleOrderViEn> reivew(Integer userid,Integer id);
	
	/**
	 * 销售订单弃审
	 * @param id
	 * @return
	 */
	Response<SaleOrderViEn> cancelReview(Integer userid,Integer id);
	
	
	/**
	 * 销售订单关闭
	 * @param id 销售订单id
	 * @return
	 */
	Response<String> close(Integer id);
	
	/**
	 * 销售订单删除
	 * @param id
	 * @return
	 */
	Response<String> remove(Integer id);

	/**
	 * 新增销售订单
	 * @param info
	 * @return
	 */
    Response<String> add(SaleOrderViEn saleOrderViEn);
	
	
	/**
	 * 查询已审核的销售订单
	 * @param record
	 * @return
	 */
	List<SaleOrder> selectReviewOrderByCompanyId(SaleOrder record);
	
	/**
	 * 按公司查询销售订单
	 * @param companyId
	 * @return
	 */
	List<TypeInfo> queryBillNo(Integer companyId);

}
